package ar.com.ctrln.persistence.model.ticket.actividad;

import java.util.Date;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

import ar.com.ctrln.persistence.model.ticket.Ticket;
import ar.com.ctrln.persistence.model.vehiculo.Vehiculo;

@Entity
@Table(name="ACTIVIDAD")
public class Actividad {
	
	public static final String ESTADO_CREADA = "Creada";
	public static final String ESTADO_PROGRAMADA = "Programada";
	public static final String ESTADO_FINALIZADA = "Finalizada";
	public static final String ESTADO_CANCELADA = "Cancelada";
	
	@Id
	@GeneratedValue
	@Column(name = "id_actividad")
	private long id;
		
	@Column
	private String nombre;
	
	@Column
	private String descripcion;
	
	@Column
	private Date fechaInicio;
	
	@Column
	private Date fechaFin;
	
	@Column
	private Date fechaFinReal;
	
	@Column
	private String horaInicio;
	
	@Column
	private String horaFin;
	
	@Column
	private String estado;
	
	@ManyToOne
	@JoinColumn(name = "id_vehiculo")
	private Vehiculo vehiculo;

	@ManyToOne
	@JoinColumn(name = "id_ticket")
	@Cascade(CascadeType.ALL)
	private Ticket ticket;
		
	@OneToMany(fetch=FetchType.EAGER, cascade = { javax.persistence.CascadeType.ALL })
	@JoinColumn(name = "id_actividad")
	private Set<DetalleActividad> detalles;

	public Set<DetalleActividad> getDetalles() {
		return detalles;
	}

	public void setDetalles(Set<DetalleActividad> detalles) {
		this.detalles = detalles;
	}

	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public Ticket getTicket() {
		return ticket;
	}

	public void setTicket(Ticket ticket) {
		this.ticket = ticket;
	}
	
	public Date getFechaInicio() {
		return fechaInicio;
	}

	public void setFechaInicio(Date fechaInicio) {
		this.fechaInicio = fechaInicio;
	}

	public Date getFechaFin() {
		return fechaFin;
	}

	public void setFechaFin(Date fechaFin) {
		this.fechaFin = fechaFin;
	}

	public Date getFechaFinReal() {
		return fechaFinReal;
	}

	public void setFechaFinReal(Date fechaFinReal) {
		this.fechaFinReal = fechaFinReal;
	}

	public String getHoraInicio() {
		return horaInicio;
	}

	public void setHoraInicio(String horaInicio) {
		this.horaInicio = horaInicio;
	}

	public String getHoraFin() {
		return horaFin;
	}

	public void setHoraFin(String horaFin) {
		this.horaFin = horaFin;
	}

	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	public Vehiculo getVehiculo() {
		return vehiculo;
	}

	public void setVehiculo(Vehiculo vehiculo) {
		this.vehiculo = vehiculo;
	}

	@Override
	public String toString() {
		return getNombre();
	}

	
}
